{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Multi Agent Structures (2)\n",
    "\n",
    "- Author: [Sungchul Kim](https://github.com/rlatjcj)\n",
    "- Peer Review:\n",
    "- Proofread  : [Juni Lee](https://www.linkedin.com/in/ee-juni)\n",
    "- This is a part of [LangChain Open Tutorial](https://github.com/LangChain-OpenTutorial/LangChain-OpenTutorial)\n",
    "\n",
    "[![Open in Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/LangChain-OpenTutorial/LangChain-OpenTutorial/blob/main/17-LangGraph/02-Structures/09-LangGraph-Multi-Agent-Structures-02.ipynb)[![Open in GitHub](https://img.shields.io/badge/Open%20in%20GitHub-181717?style=flat-square&logo=github&logoColor=white)](https://github.com/LangChain-OpenTutorial/LangChain-OpenTutorial/blob/main/17-LangGraph/02-Structures/09-LangGraph-Multi-Agent-Structures-02.ipynb)\n",
    "## Overview\n",
    "\n",
    "In this tutorial, we will explore the existing **supervisor with tool-calling** , **hierarchical** , and **custom multi-agent workflow** structures, following [the previous tutorial](https://github.com/LangChain-OpenTutorial/LangChain-OpenTutorial/blob/main/17-LangGraph/02-Structures/08-LangGraph-Multi-Agent-Structures-01.ipynb).\n",
    "\n",
    "<div align=\"center\">\n",
    "  <img src=\"./assets/09-langgraph-multi-agent-structures-02.png\"/>\n",
    "</div>\n",
    "\n",
    "- **Supervisor (tool-calling)** : this is a special case of supervisor architecture. Individual agents can be represented as tools. In this case, a supervisor agent uses a tool-calling LLM to decide which of the agent tools to call, as well as the arguments to pass to those agents.\n",
    "\n",
    "- **Hierarchical** : you can define a multi-agent system with a supervisor of supervisors. This is a generalization of the supervisor architecture and allows for more complex control flows.\n",
    "\n",
    "- **Custom multi-agent workflow** : each agent communicates with only a subset of agents. Parts of the flow are deterministic, and only some agents can decide which other agents to call next.\n",
    "\n",
    "### Table of Contents\n",
    "\n",
    "- [Overview](#overview)\n",
    "- [Environment Setup](#environment-setup)\n",
    "- [Supervisor Structure with Tool-Calling](#supervisor-structure-with-tool-calling)\n",
    "- [Hierarchical Structure](#hierarchical-structure)\n",
    "- [Custom Multi-Agent Workflow](#custom-multi-agent-workflow)\n",
    "\n",
    "### References\n",
    "\n",
    "- [LangGraph: Multi-Agent Architectures](https://langchain-ai.github.io/langgraph/concepts/multi_agent/#multi-agent-architectures)\n",
    "\n",
    "----"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Environment Setup\n",
    "\n",
    "Set up the environment. You may refer to [Environment Setup](https://wikidocs.net/257836) for more details.\n",
    "\n",
    "**[Note]**\n",
    "- ```langchain-opentutorial``` is a package that provides a set of easy-to-use environment setup, useful functions and utilities for tutorials. \n",
    "- You can checkout the [```langchain-opentutorial```](https://github.com/LangChain-OpenTutorial/langchain-opentutorial-pypi) for more details."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "%%capture --no-stderr\n",
    "%pip install langchain-opentutorial"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\n",
      "\u001b[1m[\u001b[0m\u001b[34;49mnotice\u001b[0m\u001b[1;39;49m]\u001b[0m\u001b[39;49m A new release of pip is available: \u001b[0m\u001b[31;49m24.3.1\u001b[0m\u001b[39;49m -> \u001b[0m\u001b[32;49m25.0\u001b[0m\n",
      "\u001b[1m[\u001b[0m\u001b[34;49mnotice\u001b[0m\u001b[1;39;49m]\u001b[0m\u001b[39;49m To update, run: \u001b[0m\u001b[32;49mpip install --upgrade pip\u001b[0m\n"
     ]
    }
   ],
   "source": [
    "# Install required packages\n",
    "from langchain_opentutorial import package\n",
    "\n",
    "package.install(\n",
    "    [\n",
    "        \"python-dotenv\",\n",
    "        \"langchain_core\",\n",
    "        \"langchain-openai\",\n",
    "        \"langgraph\",\n",
    "    ],\n",
    "    verbose=False,\n",
    "    upgrade=False,\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Environment variables have been set successfully.\n"
     ]
    }
   ],
   "source": [
    "# Set environment variables\n",
    "from langchain_opentutorial import set_env\n",
    "\n",
    "set_env(\n",
    "    {\n",
    "        \"OPENAI_API_KEY\": \"\",\n",
    "        \"LANGCHAIN_API_KEY\": \"\",\n",
    "        \"TAVILY_API_KEY\": \"\",\n",
    "        \"LANGCHAIN_TRACING_V2\": \"true\",\n",
    "        \"LANGCHAIN_ENDPOINT\": \"https://api.smith.langchain.com\",\n",
    "        \"LANGCHAIN_PROJECT\": \"Multi-Agent-Structures-02\",\n",
    "    }\n",
    ")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "You can alternatively set API keys such as ```OPENAI_API_KEY``` in a ```.env``` file and load them.\n",
    "\n",
    "[Note] This is not necessary if you've already set the required API keys in previous steps."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "True"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Load API keys from .env file\n",
    "from dotenv import load_dotenv\n",
    "\n",
    "load_dotenv(override=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Supervisor Structure with Tool-Calling\n",
    "\n",
    "In this variant of the supervisor architecture, we define individual agents as tools and use a tool-calling LLM in the supervisor node. This can be implemented as a ReAct-style agent with two nodes — an LLM node (supervisor) and a tool-calling node that executes tools (agents in this case)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "from typing import Annotated\n",
    "from langchain_openai import ChatOpenAI\n",
    "from langgraph.prebuilt import InjectedState, create_react_agent\n",
    "\n",
    "model = ChatOpenAI()\n",
    "\n",
    "def agent_1(state: Annotated[dict, InjectedState]):\n",
    "    \"\"\"\n",
    "    This is the agent function that will be called as tool.\n",
    "    You can pass the state to the tool via InjectedState annotation.\n",
    "    \n",
    "    NOTE:\n",
    "    - To use this agent as a tool, you need to write the accurate docstring describing how this agent works.\n",
    "    \"\"\"\n",
    "    \n",
    "    # you can pass relevant parts of the state to the LLM (e.g., state[\"messages\"])\n",
    "    # and add any additional logic (different models, custom prompts, structured output, etc.)\n",
    "    response = model.invoke(...)\n",
    "    # return the LLM response as a string (expected tool response format)\n",
    "    # this will be automatically turned to ToolMessage\n",
    "    # by the prebuilt create_react_agent (supervisor)\n",
    "    return response.content\n",
    "\n",
    "def agent_2(state: Annotated[dict, InjectedState]):\n",
    "    \"\"\"\n",
    "    This is the agent function that will be called as tool.\n",
    "    You can pass the state to the tool via InjectedState annotation.\n",
    "    \n",
    "    NOTE:\n",
    "    - To use this agent as a tool, you need to write the accurate docstring describing how this agent works.\n",
    "    \"\"\"\n",
    "    response = model.invoke(...)\n",
    "    return response.content\n",
    "\n",
    "tools = [agent_1, agent_2]\n",
    "# the simplest way to build a supervisor w/ tool-calling is to use prebuilt ReAct agent graph\n",
    "# that consists of a tool-calling LLM node (i.e. supervisor) and a tool-executing node\n",
    "supervisor = create_react_agent(model, tools)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<IPython.core.display.Image object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "from langchain_opentutorial.graphs import visualize_graph\n",
    "\n",
    "visualize_graph(supervisor)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Hierarchical Structure\n",
    "\n",
    "As you add more agents to your system, it might become too hard for the supervisor to manage all of them. The supervisor might start making poor decisions about which agent to call next, the context might become too complex for a single supervisor to keep track of. In other words, you end up with the same problems that motivated the multi-agent architecture in the first place.\n",
    "\n",
    "To address this, you can design your system **hierarchically** . For example, you can create separate, specialized teams of agents managed by individual supervisors, and a top-level supervisor to manage the teams."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "from typing import Literal\n",
    "from langchain_openai import ChatOpenAI\n",
    "from langgraph.graph import StateGraph, MessagesState, START, END\n",
    "from langgraph.types import Command\n",
    "model = ChatOpenAI()\n",
    "\n",
    "# define team 1 (same as the single supervisor example above)\n",
    "\n",
    "def team_1_supervisor(state: MessagesState) -> Command[Literal[\"team_1_agent_1\", \"team_1_agent_2\", END]]:\n",
    "    response = model.invoke(...)\n",
    "    return Command(goto=response[\"next_agent\"])\n",
    "\n",
    "def team_1_agent_1(state: MessagesState) -> Command[Literal[\"team_1_supervisor\"]]:\n",
    "    response = model.invoke(...)\n",
    "    return Command(goto=\"team_1_supervisor\", update={\"messages\": [response]})\n",
    "\n",
    "def team_1_agent_2(state: MessagesState) -> Command[Literal[\"team_1_supervisor\"]]:\n",
    "    response = model.invoke(...)\n",
    "    return Command(goto=\"team_1_supervisor\", update={\"messages\": [response]})\n",
    "\n",
    "team_1_builder = StateGraph(Team1State := MessagesState)\n",
    "team_1_builder.add_node(team_1_supervisor)\n",
    "team_1_builder.add_node(team_1_agent_1)\n",
    "team_1_builder.add_node(team_1_agent_2)\n",
    "team_1_builder.add_edge(START, \"team_1_supervisor\")\n",
    "team_1_graph = team_1_builder.compile()\n",
    "\n",
    "# define team 2 (same as the single supervisor example above)\n",
    "class Team2State(MessagesState):\n",
    "    next: Literal[\"team_2_agent_1\", \"team_2_agent_2\", \"__end__\"]\n",
    "\n",
    "def team_2_supervisor(state: MessagesState) -> Command[Literal[\"team_2_agent_1\", \"team_2_agent_2\", END]]:\n",
    "    response = model.invoke(...)\n",
    "    return Command(goto=response[\"next_agent\"])\n",
    "\n",
    "def team_2_agent_1(state: MessagesState) -> Command[Literal[\"team_2_supervisor\"]]:\n",
    "    response = model.invoke(...)\n",
    "    return Command(goto=\"team_2_supervisor\", update={\"messages\": [response]})\n",
    "\n",
    "def team_2_agent_2(state: MessagesState) -> Command[Literal[\"team_2_supervisor\"]]:\n",
    "    response = model.invoke(...)\n",
    "    return Command(goto=\"team_2_supervisor\", update={\"messages\": [response]})\n",
    "\n",
    "team_2_builder = StateGraph(Team2State)\n",
    "team_2_builder.add_node(team_2_supervisor)\n",
    "team_2_builder.add_node(team_2_agent_1)\n",
    "team_2_builder.add_node(team_2_agent_2)\n",
    "team_2_builder.add_edge(START, \"team_2_supervisor\")\n",
    "team_2_graph = team_2_builder.compile()\n",
    "\n",
    "\n",
    "# define top-level supervisor\n",
    "\n",
    "builder = StateGraph(MessagesState)\n",
    "def top_level_supervisor(state: MessagesState) -> Command[Literal[\"team_1_graph\", \"team_2_graph\", END]]:\n",
    "    # you can pass relevant parts of the state to the LLM (e.g., state[\"messages\"])\n",
    "    # to determine which team to call next. a common pattern is to call the model\n",
    "    # with a structured output (e.g. force it to return an output with a \"next_team\" field)\n",
    "    response = model.invoke(...)\n",
    "    # route to one of the teams or exit based on the supervisor's decision\n",
    "    # if the supervisor returns \"__end__\", the graph will finish execution\n",
    "    return Command(goto=response[\"next_team\"])\n",
    "\n",
    "builder = StateGraph(MessagesState)\n",
    "builder.add_node(top_level_supervisor)\n",
    "builder.add_node(\"team_1_graph\", team_1_graph)\n",
    "builder.add_node(\"team_2_graph\", team_2_graph)\n",
    "builder.add_edge(START, \"top_level_supervisor\")\n",
    "builder.add_edge(\"team_1_graph\", \"top_level_supervisor\")\n",
    "builder.add_edge(\"team_2_graph\", \"top_level_supervisor\")\n",
    "graph = builder.compile()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<IPython.core.display.Image object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "visualize_graph(graph, xray=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Custom Multi-Agent Workflow\n",
    "\n",
    "In this architecture we add individual agents as graph nodes and define the order in which agents are called ahead of time, in a custom workflow. In ```LangGraph``` the workflow can be defined in two ways: **Explicit control flow (normal edges)** , **Dynamic control flow (```Command```)** ."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Explicit control flow using normal edges\n",
    "\n",
    "```LangGraph``` allows you to explicitly define the control flow of your application (i.e. the sequence of how agents communicate) explicitly, via normal graph edges. This is the most deterministic variant of this architecture above — we always know which agent will be called next ahead of time."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "from langchain_openai import ChatOpenAI\n",
    "from langgraph.graph import StateGraph, MessagesState, START\n",
    "\n",
    "model = ChatOpenAI()\n",
    "\n",
    "def agent_1(state: MessagesState):\n",
    "    response = model.invoke(...)\n",
    "    return {\"messages\": [response]}\n",
    "\n",
    "def agent_2(state: MessagesState):\n",
    "    response = model.invoke(...)\n",
    "    return {\"messages\": [response]}\n",
    "\n",
    "builder = StateGraph(MessagesState)\n",
    "builder.add_node(agent_1)\n",
    "builder.add_node(agent_2)\n",
    "# define the flow explicitly\n",
    "builder.add_edge(START, \"agent_1\")\n",
    "builder.add_edge(\"agent_1\", \"agent_2\")\n",
    "graph = builder.compile()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAGwAAADqCAIAAADI7TdfAAAAAXNSR0IArs4c6QAAGfxJREFUeJztnXd8FNXax5/tsz2bTe9h0yGBhN4VUIoIovACgjQFr4qKhWtDQQVFvQIXsFzRi1gQVOSqiF6atFCkSBKSkLrpdbO9zuzOvH8sRi5umU0myYTM96+ZOWfOPPP7nDPnzHMaiyAIYOgc7J424FaAEZECGBEpgBGRAhgRKYARkQK4nU+i1WG7rG9R8JAam8mGu+ZEJyFszrf15TQ/nhuTzGexz2obE0XyCETUAyJanNh3DRVazLEsPr3MYqixmTgstsXltLmcbQ4bwuHS/1jjsAnZ3INN1TVW00c5E9gAaosxRarogBqsQBvbNRZjlEh6QdvUYLfkBIXJePwOPJWG4ATxZsnFKKHk2eTsQO8NTMSv68sv61pWp+QE+pjeQrXVmCQJKjRqRwZHkL8rgIoFxV18FvsWVhAA4kUyDMeFbM6LhWdx0tmLbE7cXH5lUVxa5yzsTWhRO5fFThTLyEQmlROfyDs5Pzq504b1JoL5iIzH39dQ4cRxv5H950QUd5mcGHXm9SZMGPq+uuDtAaN9R/Mj4m/aZoIFSWI51eb1GuwuJ5/FCUWEPuL4Ks7lZsPPzVV9WUEAQDhcowu1u5w+4vgSkQ2wLKF/FxjWyzCi6JslF31E8CViKCIScSj4L+ztxImlKklQldXoLYJXET+uKjrQqO4ywzxgsZgvnT/dmRSam+qvFedTZ9Gf3BWRECeSegv1KmJuW0N2UGhXGOQRgiDunTrs16MHO5xCybWCeyYPbairptSu6+AE8XOT15Q9i0gQxObMsaECX1UStdTVVOl12gFZgwO9EcdxdwOj+GoejuMdSIEMbBbrsr61wmzwHOrxKovFAlZXGAMAUFhw+ZGls24brppx5+B/bX8LAE7++svs6SMBYO0Ljw3PjNj92YfumLU1VS88vXzS6LTR2TGzpg7bvnm9+/qLzyy//97bf/rh69nTRozJiTUZDVvefuXNV58FgLsn5QzPjOiKQj1QHmLHXR6DPNcbBxrV5RbDA13wn6dpbX58xbyklLTnX367pDifwHEASO8/aOKdd587c2LTe58DQEJiMgCoK0tXLJoRFRP/3Mtv8fn8bZteP597fOVTawBAXVHa0tJ04ugvr2zYpte3yeRB98x54PTxQ6ERUQ+vfA4AkpIzKLd8tDJSyUc8BnkW0Ya7pNwu8XEVFlyymI1LHlo1auyEKdPvc18MDYvQG3RpGZmDcoa7r+A4vu75lcHBoR/u3C8UigBg++b1qRmZAOB0OmtrKlUpGW9u2sHhcNzxY2ITm5saptw9pz0FylFbjPU2c5Y85K9BnovznOikWVH9usKUfqp0Npu9bdNrRVd/v/F6SVFBWnpW++nZ3GPXivOXPfyUW0GLxVxbXemOUFerxjBs9twl7QoCQEV5MYqhaf2zoMuotZp+17d6DPIsotmJWbrmfzk2PvGfH+7BUMfS+VM3vv53HMfd3z6zyZDWf2B7tNMnDnM4nAl33u0+Lb12lSAId05UV5QAQP/M/3GdXivMB4DUtMyusNlNjEgyRBHuMciziHmG1i/rSrvImmEjx+3+z4lpM+bs//qzS7+dBoBrRW4JBrTHqatRh0VE8Xg89+mFcyfZbHZyan8AqCwv5XK5sfGqG9O8VpyvDAkLDQvAkxooSeKg/rJgj0GeRVSJ5UYM7QpTUNQBAHwef/K0+wAAQzEAqCwrAoCQGyTgcfm8PzoerFbLj/u/kgcFI4jQnRNjYhPb9XVTUVYcGhbZFQa3c7C5qt5m9hjkuWKJQMTr0odR7gEzGvQL50ycNn12VEz87l0fRsXEDRw8DADEUhkAbNv02oDMnKiY+JwhI7NyhuWeOnLwh29UKWnvb9nQ0tyI/OFHUVeW9Uu6udkgEcuu5v26+7MPeTz+uNsnh0dEU2s5AFzUtSyITfUY5PWPRY+hVqpF1Ou1if2Sv/5q53tb1ieqUrd99I1YLAWA6TPnZQ0a8uN3u7e++6pB3wYAcxc8dNeM/3t345qnHl0oEIjuX/Sw3W6rrVa7XK6aqopE1c0e4mV/eyosIuq9zes/+2QbgVM/zq3NYbs/NsVbqFd/Yr5B832j+tF+Xfip7kWwgaXgC7yFenXSZMlDctsaWx02bz9/RoP+ninDPAbFxMXX1Xj40xw/YfLaDdvImd0p3tuyft/ez/56XSaTGY2enTHr3tg67vYpHoPMTmx3bckLqUO8Pc6PZ9voRDEvnQw4jjc11Hm+jc0CT2VKKBIpgj00VinHoNdZzKa/XmexvL6vQhnibpP+lV3VxdlBobeHxnh7nB8RDzSpoxBJvHcv0C0PThAImyP1OUbBT2/f9IjET6oKUZfnH+++QIlJJ+L68Uz77+3DCUKHOSg1rNfwQWXBvJjkJEmQ72hkO+/fq8yfF+O1jr8labRb4kQSGddrpdwO2WEkC2JS/16Q22nDegeVFsMvTdUDZEoyCgY2oIkgCBcQF3UtYXyh3HujqbdjxNDddSXPJGUjpDvpAhjQxGKxuCx2nFD6SXVRsUnbUSNpSqXF8Gl1MQAo+chLqUPJK9iR8Ylu6mzmcES0uewKiwWTQmPjRNIyk87kwpKlCimHV2rWG51YqjSI5scXdS11dvN4ZVQEIt5WkZcTFDo5PL4DanSwWzlGKAGAVUkD8w0aBR8J4gmaHLZCozZRLJch/EKjttpqVIllnT++UFXeX2N55L65FKbpPpYjfA1qk3H4UUKxiMPz8UPilw7mxG7jiy++0Gg0q1at6mlDfMHMHqAARkQKoLuIQqFQJiM1XLUHobuINpvNm/OKPtBdRA6Hc1N3Cg2hu4gulwvD6D7Yme4i8vl8obD7xlV1DLqLiKKozWbraSv8QHcRRSKRXE73QeN0F9FqtRoMnkcF0ge6i9groLuIPB5PIKC775LuImIY5nDQvYeH7iIyOZECmJzYV6C7iAiCSCSSnrbCD3QX0W63m82eh1bSB7qL2Cugu4iMU5YCGKdsX4HuIjJeHApgvDh9BbqLyNTOFMDUzn0FuovI9DtTANPvTAGMF4cCGC9OX4HuIvJ4PATxvAYIfaC7iBiG2e32nrbCD3QXkXFAUADjgKAAJidSAJMTKUAgEIhEndoYoBug6WSgmTNnEgRBEITVasVxXCqVuk8PHDjQ06Z5gKarnSYlJR0/fpzFur7+oMlkwnF86NChPW2XZ2hanBcvXhwa+j/riCoUioULF/acRb6gqYhZWVnp6ek3XlGpVGPHju05i3xBUxEBYMmSJcHB1xc4k8vlixYt6mmLvEJfEQcOHJiVleWu91Qq1ZgxY3raIq/QV0T3l1GpVNI8G5Ktna0urNJsNLq63cMcHRo9cazFYmFnJJ3RNnXzwyUcbqJYRmZZWP/txI0ll3K1jX1wBwIBh3PNpMuRh76cNrS9seURXyK6COLpglP9pcEeV6PtI5SZ9Sc1DdsGjvOxtIYvEZ8tOJ0lV6ZIOrKB2K1Eo93yc3P1R9kTvEXwWrGc0zaJOVxGQQCIRMSJItmRllpvEbyKWGkx8tkcb6F9DYTDKTXrvYV6FVGL2kMEdO/c6DaUfKHB6XWlYq8fSwfuYrGYnHgdF0H4WHic1o3t3gIjIgUwIlIAIyIFMCJSACMiBTAiUgAjIgUwIlIAIyIFMCJSQG8VsTTvUmN1wLuE1lWWPTJtVEmer91dO0CvFHHnO+te+9uC+qrygO4qzb+8YeVik476xa17YBiJpqmew+EpQsM6nILNYgkoPoY6vty68ci+rzr8RN9QKeK5Iz/v+3hra2MDj8tLyhw477Fn45PTAQC12/bv/ODMoQMGbVtMYhJqt7lcznU79kqDFAZt294PNv1++qjdYo3ulzz9geUjJk4BgKrSojWL750yb3Fjjbos/wofQYaMnzjv0dWISLTjjTVn/vsjAGx5/nEAGH/37OUvrvdtmF7TemTfV3HJaWa9XttKfa8hlcXZiaEupzMlc5BUoSg4n/vWqodQuw0APnnrlR8/+wiz21IyB9VXljVUV6ZlD5MGKcwG/asr5p08sE8kkSVmZNZXlm1fs+rY93vbE/xlz67muprhE6cIEOTIvq++3LoRAFQZmcqIKABIGTh4xKSpqgz/G0Bxefz5jz372r+/lSuVFL7vn+lTmNboKTPGTJ3pPt783MpLJ48UXf4tI2fY2cMHuXzBxt0/yRTBF08c2vL8E001agDYv/P9lvraCbPmLl29jsVi1VaUrlly79cfbB4/fbY7kfDY+A2fficQiox67ZMzbjt1cP+S1Wsn3DP32pWLZ5oaps1fMmT8HWQMU4SG3bXwIQrf9CaoFFGnaf5h10cFv+VqW5rd/bQtDbXp2UOBIFgEwWazAYDD5QMAhqIAcPnUMQCwW61fbXvbnYJQLDEb9C11Ne5TmUIpEIoAQBYUHBIV3Vit1rU2hXTBdnKdhDIRLSbD2mVzdZrmfumZ/XOGVxRfrS4tclhtAqHotrtnH/v+65cWzYpPTS++9BsAuHOQTtMKAO4P3I3wEYHDcfPqnTy+AABcmJMqgymEMhEvHD+s0zQPGX/Hqo3bAOA/Oz+oLi1yd2rft+LJCycO6dpajOfaZArl5HmL7lr4IACIJBKj1vH2VwejEm7efNZk8Nq11g59xvhSVrHYrRYACIu6vqVYWcFlAMBxFwDs2f6OSa9/fP3mnSfz//n9r7OXP+HeEDc9e6j7y4hhKAA4MayiqIDMs4RiMQA0VKsBAOua7UIDgrKcmJo1GAAOfftFc32NtqVJfa0QABprKgGgrbUJAArOnS7Ju6TXtASFhI2ffl+sKmXWsseunDlx9tCBokvnwqJim2urWBzO5n1H+P66apMHZB/9bs++HVsvnjiMOhxvfXnzB6GboSwnJqYPWP7SBmV4ZP7ZU8Bird68Iyq+X2XxVQxD71rwoDIs8tj3X/+yZ9e5Iz//smfXayvuN+q0Mf2SX/7wy0GjxqM2e2VxASKSjJ48g/CyTeCNjJp8951zHhBJpHXlpRJZz4+08joW592y3xEOZ3BQx/8r2kHttvzzudljbudwOKjdtuGxxRVF+S9u+zRjyIjOJ949FJt0FRbD+gzPBnfHb98Hrz534fghgVCoCA036nRWk0GqCI5PTSdxKymO7t978cQhj0GIUPzkm1upepA3ukPESffOx3FXaf4lTWO9XBk6fOLkGQ+sEEspK4YNVRUF5z3v5CYUd8fel91RnG8BfBfnXukKoxuMiBTAiEgBjIgUwIhIAYyIFMCISAGMiBTAiEgBjIgU4FXEIL6A43NCW5+CDRAm8Lppm1cRIwWiWivdl4vrNmpsphB+4CIODgozeZ/+0tcwYOhQhVdfjFcRwxHR1PCEvXWlXWZYr2F/Q8UQRViyJMhbBD/znX9trfuitiRbHhojFCMcuq/tSi0o7qqzmUvNuttCYu6Jurk/8kb8TxqvsBj2N1TU2SxNjsCGEVEChmI4gffINlXRiCRMIJwaHu93ujdNV2hqh9muva/AiEgBdBeRWT+RApj1EymAWaycApjFyimA2Y+FApj9WCiA+SZSAPNN7CvQXUQEQaTS7hjZ1RnoLqLdbjeZTD1thR/oLmKvgO4istls91QDOkN3EXEcd7lcPW2FH+guIrPlHAUwW871FeguIp/PFwq99prTBLqLiKKozXbzjFO6QXcRewV0F5Hx4lAA48XpK9BdRKbLlAKYLtO+At1FZGpnCmBqZwpgvDgUwHhx+gp0F5EZRkIBzDASCmByIgUwOZECmJxIAUxOpACRSET/nEjTyUDz58/n8Xgoiur1eoIgwsPDURTFMGzfvn09bZoHaLpdu1AozMvLa99BtK2tjSAIlUrV03Z5hqbFeeHChSKR6MYrCIIsWLCg5yzyBU1FnDBhQkpKyo2fmujo6JkzZ/aoUV6hqYgAsGDBgvbMyOfzFy5c2NMWeYW+Ik6YMCEpKcl9HBcXN2PGjJ62yCv0FREAlixZIpfL+Xz+vHnzetoWX3Rh7YziuA5zCNjsIJ6gY8cDR41ITEw0WCwjp07WY44Op/PHsauL9gmmuJ2ocdjWFv9mcWH3RavKzMaTmrpwRDQ6OLIZteVqGnrweKwySuOw5Rk1qWLFU8mDdKg9AhFT9dbUiPhZdfFRTV2SOOg3bZOD8L/Gc8/CZ7OTxHKTE1sWnzFaGdn5BDsrYr3dfEWv+biq0OKi464AvpFxeA/Ep4k5vElhsZ1Jp+MiughidcHpertFhzk6Y0GPI+ZwwwWibYPG81gdrGY7Xjvvqi4uNet7u4IAYHE5q63Gs22NHU6hgznxm7qyj6uL6Oi66ASZMuWGjBEIJ+AWS0dEXJV3stSs632fQBJEIeJPB08K9K6Ai/Phltoam/mWVBAA9Jij1hbwLLiARTzd1mB20b03vcNYXc7Xiy+oLYH50gMrzg9dPlpjo/vImM4TL5TuyJlAPn4AOfFYS62RBtvwdAMmJ1YZSGYMoCaKFEr0dFpRkXC52i5cUQ7PYflbcVSXX1T2/i5TeRVXiCgGZ6WsXIqEBPuIr8XsjQ5LPzHZvh2yOdGJ40daaklG7h7yX/lH2fu7/CrotFivrF7vsqOqZfNCRg9tPnr66qub/Ca+s6q4xkq2hiGbE4+21v7aWkcyMhlwFAMWsDsxbM5QVBoyIsdvNK5YlP3uK1JVAkeIAIDTbGk9dZ4gCN/qtzpsF3XNcSJSk/7JilhrM5OvlNsu5FV+utdYUgEEIYqNTlgwK/KOcTiGVe7c2/jLcVRvlKji+UEyUWxU6hMPAoBDo634957W3AtOk0WcGJu6cqkiewAA5L30Fk8ulacnV+3eb2/WSJMTM9c+LYwKx8yW41MXAkHU/3i4/sfDoWOGDdr4og97ggaktR9jBpMgROk3/9pwZwLlxXl6ZCLJmE2HT15+ep0gJDjr1WcznnvMoq4xFpcBwNXXt1Tv+SHmnilZr68GFmjOXoqaOgEAbI0t55ev1py5GD93RsYLK1ksVt7Lb7vbDKjB2HT4ZP3Bo4mLZsfPn2koLFF//i0AsLncpBULAKD/mlVD3n8j5fFlJG3TX72mu1IYe980MpE5pH+lyebEAoOGTDR7i6bo7fcjJ982YM2TAOBo0xEulzRFZampbz6Wm/zYkoT59wCAy+4oWPsPl80OAIVvbHXZ7SP+vVkYGQYA9mZN+b8+x1GUIxC4rDZpcuLgrevZXA4ANB09bWtsBgAOIiBcOIvHjZg0hs0l+woum73wjW2SfnFxc6aTif9pdfHmrLFkYpIV+z8NlWTakzXf/oSjmGr5/e5TY0kFAMhSVdbaBgAIykr/8zqLhUSFmyurdb9fDc7JYvN5tqaWxv8er97zvXJ4NkcgIHDcUlOvGNTfrSAA4DY7TyZtT0GqSiCvIAAUb/rI3tSaue4Zch9igvzizmSNCBUIyyz+55NozlwIykoXhoe6T02llWxEII6L4ggFLB5Xd7lAnpHSmnuh9tufwm8bhYQE15//HQDaLlw5OXMpALA4nMjJ41NWLgMAW2MzbneIE657+pxWm6NNJ4q7vhussaQ8dOQQksYDQP2Bw40/H0tf/YgkMY7cHaxpEQkkEycr4gNxaWe0/reXttY3yTNS2k/bLuZJkxJYHI4wIixr3bMVn+yu3PUNbneE3z4644WVAEA4nQAwfMc7OIYROCGKjuCKr3eTmtW1AND+zmZ1TfspqtM7WtqkKb5WHL4RU7n62uYdEZPGxsycTPIWAFCJyc7kIlucDeT+VdhcbnthMZZU6POLkbDrSwOHjhkqio3mK+QjP9+W9fpqrkgIAEh4KACYK6qlSYmylH7tCgKARV0DbHZ71rNU1gCAO2OaKqoBQOCzwdyO02rLf/kdJCwk/e+PknxZN981VJCMSTYn6lG7hMszO/20coIy01pOnY+YPJ5wuoo2bgccd9ceblCD0d7Uem7ZU+K4mKzXV4vjooNzMgVhyuJ/fGitaxSEBLdduJL8yCK37mZ1rTAqnCPgu+81q2tYHLY4LgoAuBIxAFTv+d5ptrDY7Ig7xvkwqejN7dbahvBJY2u+ub7ladi4EX4LNRdYGVIFSXHIijhEER5WX+5XxLRn/la0cfvvz7zGVypCRgy2NbWYytXuIBaHM3T7BqfVpr2Yn7fmrbofDqWuXMrm87LfeaVkyw71F/vYXK4sPYmvuF6ILOoaScKfXR9mda0wKsKdzeVpSVF3TWo6fNJ4rTz23qk+RNRfvdb8ay4ANB851fzHxeDBWX7fd4Qyck50MhllAvPiFJt0T+afJBn5JnAUY/OvF3PMbDk5c2nC/bNUD87vWGrdwNr0YaODyXYEBtBEkHC5kQJRo8MaqEF2jfbcklXBOZnyAWkuq63xv8e5EnH0jDsDTccbmNlyevYKj0HJjy6OCfxBIjanxRbAawbmT3wq/1ShSRuoTS67Q/35t83Hcu0tGkGoMnTUkIT7Z5GsFshA4Li92fO/AE8udddgAREnlH4ciD8xMBHbUNuawnMVVroPou4M8SLpjuwAFAy4e0DJF76aMULO5QdoWK8BYXMmhsYEelfAfSxhAmG0UHyr7rsULZTMi0khEfF/6GC/87ri82R+YHoXS+PT5weuYKeGkRQatS8U5tpJbFFPfwQs9rSIhEf6ZXbs9o4PI+kvC749JCaI1wPbzVBLpEA0QhnRYQUpGBV2Xtekcdh31RTre2FHIMLizI1NviMszsd2cmSgZnxiqVm/rTyPxWJVWY12nO4Lb/JYrCGK8FaHbVxI9LwYsv92PqBypKzGYQsRCP+lvnrF0BqNSBLFsty2xmqraWRwZJxIck7b1IPHo5SRmTLl0dZahM15OHFAP9JuLjJ07bQ0O+5yEjjC5nJZLDocd9Fr0nRuX++C1lMweguMiBTAiEgBjIgUwIhIAYyIFPD/ss3CPo3qNM4AAAAASUVORK5CYII=",
      "text/plain": [
       "<IPython.core.display.Image object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "visualize_graph(graph)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Dynamic control flow using ```Command```\n",
    "\n",
    "In ```LangGraph``` you can allow LLMs to decide parts of your application control flow. This can be achieved by using ```Command``` . A special case of this is a supervisor tool-calling architecture. In that case, the tool-calling LLM powering the supervisor agent will make decisions about the order in which the tools (agents) are being called."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "from langchain_core.tools import tool\n",
    "from langgraph.prebuilt import ToolNode, tools_condition\n",
    "\n",
    "\n",
    "@tool\n",
    "def tool_1(message: str) -> str:\n",
    "    \"\"\"This is tool_1.\"\"\"\n",
    "    return \"Hello, tool_1.\"\n",
    "\n",
    "@tool\n",
    "def tool_2(message: str) -> str:\n",
    "    \"\"\"This is tool_2.\"\"\"\n",
    "    return \"Hello, tool_2.\"\n",
    "\n",
    "tools = [tool_1, tool_2]\n",
    "tool_node = ToolNode(tools)\n",
    "\n",
    "model = ChatOpenAI()\n",
    "\n",
    "workflow = StateGraph(MessagesState)\n",
    "workflow.add_node(\"tools\", tool_node)\n",
    "workflow.add_node(\"model\", model)\n",
    "workflow.add_edge(START, \"model\")\n",
    "workflow.add_edge(\"tools\", \"model\")\n",
    "workflow.add_conditional_edges(\"model\", tools_condition)\n",
    "\n",
    "graph = workflow.compile()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<IPython.core.display.Image object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "visualize_graph(graph)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "langchain_tutorial_1",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.11.10"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
